package com.turman.plyopengl.data

import android.opengl.GLES20
import java.nio.ByteBuffer
import java.nio.ByteOrder
import java.nio.FloatBuffer

class VertexArray(vertexData: FloatArray) {

    private val floatBuffer: FloatBuffer =
        ByteBuffer.allocateDirect(vertexData.size * Constants.BYTE_PER_FLOAT)
            .order(ByteOrder.nativeOrder()).asFloatBuffer().put(vertexData)

    /**
     * 将[floatBuffer]内的数据作为属性数据传输到OpenGL中
     * @param dataOffset 第一个该属性数据的位置
     * @param attributeLocation 属性的位置id
     * @param componentCount 属性包含多少分量
     * @param stride 读取属性时需要的步长
     */
    fun setVertexAttribPointer(dataOffset: Int, attributeLocation: Int,
                               componentCount: Int, stride: Int) {
        floatBuffer.position(dataOffset)
        GLES20.glVertexAttribPointer(
            attributeLocation, componentCount, GLES20.GL_FLOAT,
            false, stride, floatBuffer
        )
        GLES20.glEnableVertexAttribArray(attributeLocation)
        // 将偏移量复原
        floatBuffer.position(0)
    }
}